package com.syh.jn.scm.service.api.downstream.base;

import com.syh.jn.scm.dto.downstream.base.logistics.DownLogisticsMto;
import com.syh.jn.scm.dto.downstream.base.logistics.DownLogisticsSto;
import com.syh.jn.scm.dto.downstream.base.logistics.DownLogisticsVo;
import com.syh.jn.scm.dto.downstream.base.logistics.logisticsAddress.DownLogisticsAddressMto;
import com.syh.jn.scm.dto.downstream.base.logistics.logisticsAddress.DownLogisticsAddressSto;
import com.syh.jn.scm.dto.downstream.base.logistics.logisticsAddress.DownLogisticsAddressVo;
import com.syh.jn.scm.dto.downstream.base.logistics.logisticsTruck.DownLogisticsTruckMto;
import com.syh.jn.scm.dto.downstream.base.logistics.logisticsTruck.DownLogisticsTruckSto;
import com.syh.jn.scm.dto.downstream.base.logistics.logisticsTruck.DownLogisticsTruckVo;
import com.syh.jn.scm.service.core.BaseService;

import java.util.List;

public interface DownLogisticsService extends BaseService<DownLogisticsSto, DownLogisticsMto, DownLogisticsVo, Long> {
  /**
   * 启用
   *
   * @param id
   */
  void enabled(Long id);

  /**
   * 停用
   *
   * @param id
   */
  void disabled(Long id);

  /**
   * 批量保存物流服务地址
   * @param stoList
   */
  void batchSaveAddress(List<DownLogisticsAddressSto> stoList);

  /**
   * 批量修改物流服务地址
   * @param mtoList
   */
  void batchModifyAddress(List<DownLogisticsAddressMto> mtoList);

  /**
   * 删除地址
   * @param addressId
   */
  void deleteAddress(Long addressId);

  /**
   * 批量保存物流服务车型
   * @param stoList
   */
  void batchSaveTruck(List<DownLogisticsTruckSto> stoList);

  /**
   * 批量修改物流服务车型
   * @param mtoList
   */
  void batchModifyTruck(List<DownLogisticsTruckMto> mtoList);

  /**
   * 删除车型
   * @param truckId
   */
  void deleteTruck(Long truckId);

  /**
   * 根据车型id查询车型
   * @param truckId
   * @return
   */
  DownLogisticsTruckVo getByTruckId(Long truckId);

  /**
   * 根据地址id获取地址
   * @param addressId
   * @return
   */
  DownLogisticsAddressVo getByAddressId(Long addressId);

  /**
   * 根据物流id获取地址列表
   * @param logisticsId
   * @return
   */
  List<DownLogisticsAddressVo> getAddressListById(Long logisticsId);

  /**
   * 根据物流id获取服务服务车型列表
   * @param logisticsId
   * @return
   */
  List<DownLogisticsTruckVo> getTruckListById(Long logisticsId);

}
